package com.zcsy.manage.service.common;

import java.io.InputStream;
import java.util.List;
import java.util.Map;

import com.zcsy.manage.model.common.Attachs;


/**
 * @Title: IFileUploadService.java
 * @Package： com.zcsy.shop.service.common.impl 
 * @Description: 〈一句话功能简述〉
 *
 * @author tanghan barbadosliy@163.com
 * @Copyright: 2015 武汉中财数元信息技术有限公司 All rights reserved.
 * @date 2015年7月10日
 * @version 1.0
 * @see JDK1.7.0_75
 * @since
 */

/**
 * @Title: IFileUploadService.java
 * @Package： com.zcsy.shop.service.common 
 * @Description: 文件上传下载服务接口类
 *   提供文件上传下载及查询方法
 *
 * @author lizhiheng yhrylzh@163.com
 * @Copyright: 2015 武汉中财数元信息技术有限公司 All rights reserved.
 * @date 2015年7月22日
 * @version 1.0
 * @see JDK1.7.0_75
 * @since
 */
public interface IFileUploadService {
    
    /**
     * 保存文件方法
     * @param content  文件流
     * @param filename 文件名称
     * @param contentType 文件类型
     * @return  返回文件存储ID
     */
    String saveFile(InputStream content, String filename,String contentType);
    
    /**
     * 保存文件方法
     * @param content  文件流
     * @param filename 文件名称
     * @param contentType 文件类型
     * @param object  保存文件附带信息
     * @return  返回文件存储ID
     */
    String saveFile(InputStream content, String filename,String contentType,Map<String, Object> object);

    /**
     * Description: <br>
     *    根据文件ID，获取文件流
     * @param fileId  文件ID
     * @return 
     * @see 
     */
    InputStream queryFileInputStream(String fileId);

    /**
     * Description: <br>
     * 根据文件ID查询文件
     * 
     * @param fileId  文件ID
     * @return  返回文件内容
     * @see 
     */
    Attachs queryFile(String fileId);

    /**
     * Description: <br>
     *    新增文件信息保存在MSSQL
     *    attachsId对应MongDB中的文件ID
     * @param attachs 文件信息
     * @return 
     * @see 
     */
    public int insert(Attachs attachs);
    
    /**
     * Description: <br>
     * 根据文件类型获取文档列表
     * @param type 文档类型
     * @return  文件列表
     * @see 
     */
    public List<Attachs> getDocumentListByType(int type);
    
    /**
     * Description: <br>
     * 根据属性类型获取文档列表
     * @param type 文档类型
     * @return  文件列表
     * @see 
     */
    public List<Attachs> selectByPropert(Integer propertType,Integer propertId);
    
    /**
     * 根据附件Id删除附件
     * @param id 附件的Id
     * @return  删除的结果
     */
    public int deleteAttach(int id);
    
    int deleteByFileId(String fileId);
    
    /**
     *     修改广告图片
     * @param record
     * @return 
     * @see 
     */
    int updateAd(String[] imageList,String adUrl,int picOrder,String description,int picType);
    
    /**
     * @Description 根据文件名 与文件类型联合查询
     * @param name 文件名
     * @param type 文件类型
     * @return 根据文件名 与文件类型联合查询的结果
     * @author yuhaichao yhcjhun@foxmail.com
     * @date 2015年6月30日
     * @see 
     */
    List<Attachs> selectByPropAndName(String name, Integer type);
    
    /**
     * @Description 根据userId 上传人；uploadDate 上传时间；attachsName 文件名联合查询文件<br>
     * @param map 包含联合查询的条件userId 上传人；uploadDate 上传时间；attachsName 文件名
     * @return 文件集合
     * @author yuhaichao yhcjhun@foxmail.com
     * @date 2015年7月1日
     */
    
    /**
     * @Description uploadDate 上传时间；userName 上传人姓名联合查询文件<br>
     * @param userName 上传人姓名
     * @param uploadDate 文件上传时间
     * @return 文件集合
     * @author yuhaichao yhcjhun@foxmail.com
     * @date 2015年7月1日
     * @see 
     */
    List<Attachs> selectBySearchkey(String userName, int picType,String startDate, String endDate, int property);
    
    /**
	 * @Description 根据主键id批量删除<br>
	 * @param ids int[]类型 保存批量删除图片的主键id
	 * @return 批量删除执行后数据库返回的结果
	 * @author yuhaichao yhcjhun@foxmail.com
	 * @date 2015年7月8日
	 */
	int deleteAttachs(List<Integer> ids);
	
	
	/**
	 * @Description 更新附件对象<br>
	 * 
	 * @param attachs  待修改文件类
	 * @param property  文件所属类型 商品：1，公告：2
	 * @param objId 文件类型ID
	 * @return 操作结果 1：成功，0：失败
	 * @author tanghan barbadosliy@163.com
	 * @date 2015年7月16日
	 * @see 
	 */
	int updateAttachs(List<Attachs> attachs,Integer property,Integer objId);
	
	/**
	 * @Description 根据属性值和传承人id获取文件列表<br>
	 * 1、…<br>
	 * 2、…<br>
	 * 
	 * @param obgId
	 * @param property
	 * @return 
	 * @author lipingping 13297986663@163.com
	 * @date 2015年7月24日
	 * @see 
	 */
	List <Attachs> selectByObgIdProperty(int objId, int property);
	
	/**
     * 
     * @Description 根据fileId更新数据<br>
     * 
     * @param record 文档对象
     * @author tanhuatang 786468449@qq.com
     * @date 2015年9月6日
     * @see
     */
    public void updateAttachsByFileId(Attachs record);
    
    /**
     * @Description 获取轮播图列表
     * 
     * @param map
     * @return 
     * @author lipingping 13297986663@163.com
     * @date 2015年9月28日
     * @see 
     */
    List<Attachs> selectforBanner(Map<String, Object> map);
    
    Attachs selectbyfileId(String fileId);
    
    /**
     * @Description 客户端广告启动页图片，picType=0
     * 
     * @param map
     * @return 
     * @author lipingping 13297986663@163.com
     * @date 2015年12月1日
     * @see 
     */
    int updatepicType(Map<String, Object> map);
}
